"""
按城市和区分别对数据进行分组聚合
与sql中的group by的含义一样
与Excel中的sumif和sumifs的含义一样

以下的例子主要熟悉一下代码的写法，不具备任何实际的意义
"""
# import pandas as pd
#
# path = '../文件/分组聚合.xlsx'
# dfData = pd.read_excel(path)
#
# for (i, j), group in dfData.groupby(['城市', '区']):
#     print(i)
#     print('*' * 30)
#     print(j)
#     print('*' * 30)
#     print(group)

"""
比较常规的分组聚合
"""
# import pandas as pd
#
# path = '../文件/分组聚合.xlsx'
# dfData = pd.read_excel(path)
#
# dfData1 = dfData.groupby(['城市', '区'])[['人数']].sum()  # 含义：以城市和区分组，对人数求和
# print(dfData1)
#
# dfData2 = dfData.groupby(['城市', '区'])[['人数', '金额']].sum()  # 含义：以城市和区分组，对人数和金额求和
# print(dfData2)

"""
进阶用法
不同的类，可以采用不同的聚合方式
如：一列用sum，一列用count
"""
# import pandas as pd
#
# path = '../文件/分组聚合2.xlsx'
# dfData = pd.read_excel(path)
# # 不同列采用不同的聚合方法
# dic = {'1月': 'count', '2月': 'sum', '3月': 'max', '4月': 'mean'}  # 封装好的聚合函数在pandas和numpy中都有，使用的时候需要注意。此例子默认pandas
# dfData = dfData.groupby('店号').agg(dic)
#
# print(dfData)

"""
进阶用法
使用字典和Series作为分组依据
"""
import pandas as pd

path = '../文件/分组聚合2.xlsx'
dfData = pd.read_excel(path, index_col='店号')
depentOn = {'1月': '一季度', '2月': '一季度', '3月': '一季度', '4月': '二季度'}
dfData = dfData.groupby(depentOn, axis=1).sum()

print(dfData)
